package com.hog.utils;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * @author 唐晴
 * @date 2020年08月06日
 * @since JDK 1.8
 */
public class ImgUtil {
    /**
     * 获取远程图片, 返回文件流
     *
     * @param urlStr
     * @return
     */
    public static InputStream getUrlPic(String urlStr) throws Exception {
        //new一个URL对象
        URL url = new URL(urlStr);
        //打开链接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
        //设置请求方式为"GET"
        conn.setRequestMethod("GET");
        //超时响应时间为3秒
        conn.setConnectTimeout(3000);
        conn.setReadTimeout(3000);
        return handleInputStream(conn.getInputStream());
    }

    private static InputStream handleInputStream(InputStream inStream) throws Exception {
        return new ByteArrayInputStream(readStream(inStream));
    }

    public static byte[] readStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = -1;
        while ((len = inStream.read(buffer)) != -1) {
            outStream.write(buffer, 0, len);
        }
        outStream.close();
        inStream.close();
        return outStream.toByteArray();
    }

    public static byte[] readInputStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        //创建一个Buffer字符串
        byte[] buffer = new byte[1024];
        //每次读取的字符串长度，如果为-1，代表全部读取完毕
        int len = 0;
        //使用一个输入流从buffer里把数据读取出来
        while ((len = inStream.read(buffer)) != -1) {
            //用输出流往buffer里写入数据，中间参数代表从哪个位置开始读，len代表读取的长度
            outStream.write(buffer, 0, len);
        }
        //关闭输入流
        inStream.close();
        //把outStream里的数据写入内存
        return outStream.toByteArray();
    }
}